package part7threadpool;

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

/*
 * Executors.newCachedThreadPool()：执行很多短期异步任务，线程池根据需要创建新线程，在先构建的线程可用时将重用他们。可扩容，遇强则强
 * */
public class ThreadPoolTest03 {

    public static void main(String[] args) {
        // 一池N线程，可扩容伸缩
        ExecutorService threadPool = Executors.newCachedThreadPool();

        try {
            // 模拟有10个顾客过来银行办理业务，池子中只有N个工作人员受理业务
            for (int i = 0; i < 10; i++) {
                // 模拟延时看效果
//                try {
//                    TimeUnit.SECONDS.sleep(1);
//                } catch (InterruptedException e) {
//                    e.printStackTrace();
//                }
                threadPool.execute(() -> {
                    System.out.println(Thread.currentThread().getName() + " 办理业务");
                });
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            // 用完记得关闭
            threadPool.shutdown();
        }
    }


}
